﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using V = Science.Mathematics.VectorCalculus;

namespace VectorCalculus5Ed.Chapter3.Section4
{
    public class Example01
    {
        public Example01()
		{
		}
		private string result;
		public string Result
		{
			get{return result;}
		}
        public void Compute()
        {
            V.Function.ToLastType<double[],double> f
                = new V.Function.ToLastType<double[],double>(func);
            V.Function.ToLastType<double[],double> g
                = new V.Function.ToLastType<double[],double>(gf);
            double[] x = {-0.6,0.2};
            double l = 0.3;
            V.LagrangeMultiplierMethod obj
                = new V.LagrangeMultiplierMethod(f, g, x, l);
            obj.Compute();
            result += obj.CriticalPoint[0].ToString() + "\r\n";
            result += obj.CriticalPoint[1].ToString() + "\r\n";
            result += obj.Lambda.ToString() + "\r\n";
        }
        private double func(double[] x)
        {
            return x[0] * x[0] + x[1] * x[1];
        }
        private double gf(double[] x)
        {
            return x[1] - x[0] - 1.0;
        }
    }
}
/*
-0.499999999999996
0.500000000000004
0.999999999999809
*/
   